package cn.itsource.serivce.impl;

import cn.itsource.domain.Permission;
import cn.itsource.mapper.MenuMapper;
import cn.itsource.mapper.PermissionMapper;
import cn.itsource.serivce.IPermissionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class PermissionServiceImpl implements IPermissionService {


    @Autowired
    private PermissionMapper permissionMapper ;

    /**--------------------------------------------------------
     方法说明：查询树状结构的权限
     步骤说明：
     方式一：
     1.查询一级权限List<Permission> ,如果parent_id 为 null 或者为 0
     2.根据一级权限的id,查询二级权限，二级权限的parent_id 等于一级权限的ID List<Permission>
     3.把二级权限列表 List<Permission> 设置到一级权限的 children中

     方式二：使用Mybatis的额外SQL来查询
     --------------------------------------------------------**/
    @Override
    public List<Permission> selectAllForTree() {

        return permissionMapper.selectAllForTree();
    }

    @Override
    public List<Long> selectIdsByRoleId(Long roleId) {

        return permissionMapper.selectIdsByRoleId(roleId);
    }


    /**--------------------------------------------------------
     方法说明：查询树状结构的权限
     步骤说明：
     1.查询一级权限List<Permission> ,如果parent_id 为 null 或者为 0
     2.根据一级权限的id,查询二级权限，二级权限的parent_id 等于一级权限的ID List<Permission>
     3.把二级权限列表 List<Permission> 设置到一级权限的 children中
     --------------------------------------------------------**/
    /**
    @Override
    public List<Permission> selectAllForTree() {
        //1.查询一级权限List<Permission> ,如果parent_id 为 null 或者为 0
        List<Permission> firstLevel = permissionMapper.selectFirstLevel();

        firstLevel.forEach(permission -> {
            Long id = permission.getId();
            List<Permission> secondsLevel = permissionMapper.selectByParentId(id);
            permission.setChildren(secondsLevel);
        });

        return firstLevel;
    }
    **/

}
